/**
 * 
 * @param fn 事件触发的回调函数
 * @param delay 延迟时间
 */
 function debounce(fn, delay = 500) {
  let timer = null;
  
  return function () {
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(() => {
      // 执行事件的回调函数
      fn.apply(this, arguments);
      // 执行后清空定时器
      timer = null
    }, delay)
  }
}

// 调用
let elem = document.getElementById('input');
elem.addEventListener('change', debounce(function () {
  console.log('change');
}, 1000))
